Many modern electronic devices employ a log-structured file system (LFS) as a non-overwrite storage system to write data to a corresponding device's writable storage component(s), in a manner that provides improved storage throughput from overwrite-type storage systems of the past. Overwrite-type storage systems were previously utilized more frequently in consumer electronic devices to minimize storage space requirements, e.g., by writing new data directly to previously-used storage blocks whose data was deemed to be obsolete, as opposed to only writing new data to free storage segment blocks. However, these predecessor storage systems have many intrinsic deficiencies that negatively impact storage throughput and data resiliency, particularly in system crash scenarios.
For this reason, the use of non-overwrite storage systems in consumer electronics is on the rise. For example, solid state drives (SSDs) and other flash-based non-overwrite storage systems provide device manufacturers with an affordable, high-capacity storage option for integration within many of their consumer electronics products. Accordingly, LFS-based storage is the predominant storage mechanism employed in numerous, different types of personal computing devices in the consumer marketplace today. Some of these personal computing devices include, but are not limited to including: desktop and laptop computers, mobile phones and smartphones, tablet computers, media player devices, electronic book devices, mobile hotspot devices, cameras, video recording devices, gaming units, or the like.
As one example, non-overwrite flash storage systems are prevalent in mobile wireless communications devices, largely because the cost per flash storage unit is decreasing while the capacity of flash storage units continues to increase. As is generally understood, flash storage is an electronic non-volatile storage medium developed from electrically erasable programmable read-only memory (EEPROM), which can be deployed in small form-factor devices, and flash has the capability of being able to be rapidly erased and reprogrammed to improve storage system throughput. The two main types of flash storage are NAND flash and NOR flash, whose characteristics are inherent to their respective NAND and NOR transistor-based logic gates. NAND-type flash can be employed in device main storage, storage cards, universal serial bus (USB) drives, and other many other applications, for the purpose of long-term storage, temporary storage, data transfer cache, etc. By way of example, a couple of common flash-based LFSs include the Journaling Flash File System (JFFS or JFFS2) and the Yet Another Flash File System (YAFFS and YAFFS2).
Non-overwrite storage systems, such as flash, can be written to in data blocks with data pages. Data blocks are individual units of a larger storage unit that is commonly referred to as a storage segment. The basic concept behind the LFS in non-overwrite storage systems is that when block data (i.e., data pages) needs to be updated or otherwise changed, the LFS will write a new copy of the changed block data to a storage block of a free segment, remap the corresponding LFS pointers, and then erase the obsolete block data from the old storage block. Non-overwrite storage devices, e.g., flash storage devices, can employ a controller entity having a block manager, e.g., as part of the flash translation layer, to perform these functions, as well as various other dedicated non-overwrite storage system functions associated with wear leveling, data block recovery, power loss recovery, garbage collection, error correction, etc.
In response to a system crash event, it is important for the controller entity of a non-overwrite storage system to be able to return to a storage system restore point where recently written information is identifiable and still maintained in storage. In these scenarios, an LFS controller entity needs to be able to re/locate and/or re/map page data in an unencumbered manner, by not being required to perform expensive, supplemental synchronization operations to ensure that storage system pointers are always updated in anticipation of uncommon system failure events.
Accordingly, there exists a need for a solution that provides for seamless non-overwrite storage system recovery, in lieu of performing unscheduled synchronization operations, to enhance system throughput for normal LFS write operations.